home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Types.h < prev    next >
C/C++ Source or Header  |  1992-05-07  |  4KB  |  178 lines

  1. #ifndef Types_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define Types_First
  7.  
  8. //---- configuration -----------------------------------------------------------
  9.  
  10. #if defined(__GNUG__) || defined(__STDC__)
  11. #define ANSICPP
  12. #endif
  13.  
  14. //--- cpp ----------------------------------------------------------------------
  15.  
  16. #ifdef ANSICPP
  17.     // symbol concatenation operator
  18. #   define _NAME1_(name) name
  19. #   define _NAME2_(name1,name2) name1##name2
  20. #   define _NAME3_(name1,name2,name3) name1##name2##name3
  21.  
  22.     // stringizing
  23. #   define _QUOTE_(name) #name
  24.  
  25. #else
  26.  
  27. #   define _NAME1_(name) name
  28. #   define _NAME2_(name1,name2) _NAME1_(name1)name2
  29. #   define _NAME3_(name1,name2,name3) _NAME2_(name1,name2)name3
  30.  
  31. #   define _QUOTE_(name) "name"
  32.  
  33. #endif
  34.  
  35. //---- name space control ------------------------------------------------------
  36. // the following includes automatically prefixes ET++ class names with ET_
  37. // remove the comment to enable it automatic prefixing
  38. // MAKEDEP is defined by etmakedep in order to speed up "make depend"
  39. #ifndef MAKEDEP
  40. #include "ET_Begin.h"
  41. #endif
  42.  
  43. //---- constants ---------------------------------------------------------------
  44.  
  45. #ifndef NULL
  46. #define NULL 0
  47. #endif
  48.  
  49. #ifndef FALSE
  50. #define FALSE 0
  51. #endif
  52.  
  53. #ifndef TRUE
  54. #define TRUE 1
  55. #endif
  56.  
  57. const int cMaxInt   = 2147483647;
  58. const int cMaxShort = 32767;
  59.  
  60. //---- types -------------------------------------------------------------------
  61.  
  62. typedef unsigned char u_char;
  63. typedef unsigned short u_short;
  64. typedef unsigned int u_int;
  65. typedef unsigned long u_long;
  66. typedef unsigned char byte;
  67. typedef u_int bool;
  68.  
  69. typedef void (*VoidFunc)(...);
  70. typedef int (*IntFunc)(...);
  71. typedef void* (*VoidPtrFunc)(...);
  72.  
  73. enum HighlightState { Off, On };
  74. enum Direction { eHor, eVert };
  75.  
  76. //--- stdarg.h -----------------------------------------------------------------
  77.  
  78. #include <stdarg.h>
  79.  
  80. #if defined(sparc) && !defined(__GNUG__) && !defined(__CC_SUN21__)
  81. #   define va_(arg) __builtin_va_alist
  82. #else
  83. #   define va_(arg) arg    
  84. #endif
  85.  
  86. //---- misc --------------------------------------------------------------------
  87.  
  88. #ifdef __GNUG__
  89. #   define SafeDelete(p) { if (p) { delete p; p= 0; } }
  90. #   define TYPEOF(x) (typeof(*x))0
  91. #else
  92. #   define SafeDelete(p) { delete p; p= 0; }
  93. #   define TYPEOF(x) *x
  94. #endif
  95.  
  96. #define Enum(x) (*((int*)&x))
  97. #define Bool(x) Enum(x)
  98.  
  99. //--- bit manipulation ---------------------------------------------------------
  100.  
  101. #define BIT(n) (1 << (n))
  102.  
  103. inline int SETBIT(int &n, int i)
  104. {
  105.     return n|= BIT(i);
  106. }
  107.  
  108. inline int CLRBIT(int &n, int i)
  109. {
  110.     return n&= ~BIT(i);
  111. }
  112.  
  113. inline bool TESTBIT(int n, int i)
  114. {
  115.     return (bool) ((n & BIT(i)) != 0);
  116. }
  117.  
  118. //---- ONEXIT ------------------------------------------------------------------
  119.  
  120. #define _ONEXIT(uniquename) \
  121. class uniquename {          \
  122.     char dummy;             \
  123. public:                     \
  124.     uniquename() {}         \
  125.     ~uniquename();          \
  126. };                          \
  127. static uniquename _on_exit; \
  128. uniquename::~uniquename()
  129.  
  130. #define ONEXIT(name) _ONEXIT(_NAME2_(_OnExit_,name))
  131.  
  132. //---- -------------------------------------------------------------------------
  133.  
  134. #define T_SIM       1
  135. #define T_PTR       2
  136. #define T_VEC       4
  137. #define T_ARR       8
  138. #define T_STR       16
  139. #define T_PTR2      32
  140.  
  141. #define SimpleMetaDef(name)                                     \
  142.     extern class Class *_NAME2_(__isa__,name);                  \
  143.     inline class Class *_Type(const name*)                      \
  144.     { return _NAME2_(__isa__,name); }
  145.  
  146. SimpleMetaDef(char);
  147. SimpleMetaDef(int);
  148. SimpleMetaDef(short);
  149. SimpleMetaDef(long);
  150. SimpleMetaDef(float);
  151. SimpleMetaDef(double);
  152. SimpleMetaDef(byte);
  153. SimpleMetaDef(u_short);
  154. SimpleMetaDef(u_int);
  155. SimpleMetaDef(u_long);
  156.  
  157. //---- dummy classes for formatting booleans and flags
  158.  
  159. class _flags { char dummy; };
  160. class _bool { char dummy; };
  161. class _enum { char dummy; };
  162.  
  163. SimpleMetaDef(_flags);
  164. SimpleMetaDef(_bool);
  165. SimpleMetaDef(_enum);
  166.  
  167. #define TX(in)      TC(in,_flags)
  168. #define TB(in)      TC(in,_bool)
  169. #define TE(in)      TC(in,_enum)
  170.  
  171. #include <stddef.h>
  172.  
  173. #ifndef FILE
  174. #include <stdio.h>
  175. #endif
  176.  
  177. #endif
  178.